package io.mft.dev.base.config;

import io.mft.commons.config.ConfigProvider;
import io.mft.commons.config.ConfigProvider.ConfigProvideLoader;

public interface ConfigProvideContainer {
	ConfigProvideLoader apiConfigProvideLoader(ClassLoader classLoader);
	
	ConfigProvideLoader log4jConfigProvideLoader(ClassLoader classLoader);
	ConfigProvideLoader apiCatalogConfigProvideLoader(ClassLoader classLoader);
	
	ConfigProvideLoader apiSQLConfigProvideLoader(ClassLoader classLoader);
	ConfigProvideLoader applicationConfigProvideLoader(ClassLoader classLoader);
	
	ConfigProvideLoader apiThreadExecutorConfigProvideLoader(ClassLoader classLoader);
	default void loadConfigToConfigProvider(ClassLoader classLoader) {
		ConfigProvider.loadConfig(applicationConfigProvideLoader(classLoader));
		ConfigProvider.loadConfig(log4jConfigProvideLoader(classLoader));
		ConfigProvider.loadConfig(apiCatalogConfigProvideLoader(classLoader));
		ConfigProvider.loadConfig(apiSQLConfigProvideLoader(classLoader));
		ConfigProvider.loadConfig(apiConfigProvideLoader(classLoader));
		ConfigProvider.loadConfig(apiThreadExecutorConfigProvideLoader(classLoader));
	}
}
